package cn.ncupyh.comptest;


import java.util.Scanner;

//计算整数二进制1的个数
public class Calculate2 {
    public static void main(String[] args) {
//        求一个整数，在内存当中存储时，二进制1的个数。
        //法一:按位与
        Scanner s = new Scanner(System.in);
        int in = s.nextInt();//输入
        int count = 0;
        //法一:右移并且和1按位与
        //若整数为负数法一:
//        if (in < 0) {
//            in = in * (-1);
//            ++count;
//        }

        //若整数为负数法二:
//        int tmp = in;
//        while (tmp != 0) {
//            if ((tmp & 1) == 1) {
//                ++count;
//            }
//            tmp >>= 1;
        ////tmp>>>=1;
//        }

        //法二:
        if (in < 0) {
            in = in * (-1);
            ++count;
        }

        int tmp = in;
        while (tmp != 0) {
            tmp = tmp & (tmp - 1);
            count++;
        }
        System.out.println(in + "的二进制中1 的个数为" + count);
    }
}
